#ifndef Kernel_Time_h
#define Kernel_Time_h

#include "Utility/Configuration/SGParameter.h"
#include "KernelModule.h"
#include "TimeIndex.h"

namespace Kernel
{
    /**
     * The physical time for the simulation analysis.
     */
    class KERNEL_EXPORT Time
    {
      public:
        explicit Time (const SG::Utility::SGParameter& parameter);

        // Outer time looping
        bool Loop ();

        void GetDeltaT ();
        void SetDeltaT (const double& dt);

      protected:
        virtual void AdjustDeltaT ();

      protected:
        TimeIndex myCurrentIndex;
    };
}  // namespace Kernel

#endif  // Kernel_Time_h